{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# $\\ell_1$ trend filtering\n",
    "\n",
    "A derivative work by Judson Wilson, 5/28/2014.<br>\n",
    "Adapted from the CVX example of the same name, by Kwangmoo Koh, 12/10/2007\n",
    "\n",
    "Topic Reference:\n",
    "\n",
    "* S.-J. Kim, K. Koh, S. Boyd, and D. Gorinevsky, ``l_1 Trend Filtering''<br>\n",
    "http://stanford.edu/~boyd/papers/l1_trend_filter.html\n",
    "\n",
    "## Introduction\n",
    "\n",
    "The problem of estimating underlying trends in time series data arises in a variety of disciplines. The $\\ell_1$ trend filtering method produces trend estimates $x$ that are piecewise linear from the time series $y$.\n",
    "\n",
    "The $\\ell_1$ trend estimation problem can be formulated as\n",
    "    \\begin{array}{ll}\n",
    "    \\mbox{minimize}   &  (1/2)||y-x||_2^2 + \\lambda ||Dx||_1,\n",
    "    \\end{array}\n",
    "with variable $x$ , and problem data $y$ and $\\lambda$, with $\\lambda >0$.\n",
    "$D$ is the second difference matrix, with rows \n",
    "    $$\\begin{bmatrix}0 & \\cdots & 0 & -1 & 2 & -1 & 0 & \\cdots & 0 \\end{bmatrix}.$$\n",
    "CVXPY is not optimized for the $\\ell_1$ trend filtering problem.\n",
    "For large problems, use l1_tf (http://www.stanford.edu/~boyd/l1_tf/).\n",
    "\n",
    "## Formulate and solve problem"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     pcost       dcost       gap    pres   dres   k/t\n",
      " 0:  0.0000e+00 -1.0000e+00  1e+05  1e-01  4e-02  1e+00\n",
      " 1:  2.2350e-01  1.5374e-01  8e+03  8e-03  3e-03  7e-02\n",
      " 2:  1.9086e-01  2.3346e-01  1e+03  1e-03  4e-04  6e-02\n",
      " 3:  3.9403e-01  4.4110e-01  7e+02  7e-04  3e-04  6e-02\n",
      " 4:  3.5979e-01  4.1278e-01  3e+02  3e-04  1e-04  6e-02\n",
      " 5:  6.4154e-01  6.4522e-01  2e+01  2e-05  7e-06  4e-03\n",
      " 6:  9.0480e-01  9.0710e-01  1e+01  1e-05  4e-06  3e-03\n",
      " 7:  9.9603e-01  9.9825e-01  1e+01  1e-05  4e-06  2e-03\n",
      " 8:  1.0529e+00  1.0542e+00  6e+00  6e-06  2e-06  1e-03\n",
      " 9:  1.1994e+00  1.2004e+00  4e+00  4e-06  2e-06  1e-03\n",
      "10:  1.2689e+00  1.2693e+00  2e+00  2e-06  6e-07  4e-04\n",
      "11:  1.3728e+00  1.3729e+00  5e-01  5e-07  2e-07  1e-04\n",
      "12:  1.3802e+00  1.3803e+00  2e-01  2e-07  9e-08  6e-05\n",
      "13:  1.3965e+00  1.3965e+00  1e-01  1e-07  4e-08  3e-05\n",
      "14:  1.3998e+00  1.3998e+00  3e-02  3e-08  1e-08  8e-06\n",
      "15:  1.3999e+00  1.3999e+00  3e-02  3e-08  1e-08  7e-06\n",
      "16:  1.4011e+00  1.4011e+00  9e-03  9e-09  3e-09  2e-06\n",
      "17:  1.4013e+00  1.4013e+00  3e-03  3e-09  1e-09  8e-07\n",
      "18:  1.4014e+00  1.4014e+00  6e-04  6e-10  3e-10  2e-07\n",
      "19:  1.4014e+00  1.4014e+00  2e-04  2e-10  7e-11  4e-08\n",
      "20:  1.4014e+00  1.4017e+00  4e-05  4e-11  2e-08  1e-08\n",
      "21:  1.4014e+00  1.4015e+00  3e-06  4e-12  8e-08  7e-10\n",
      "22:  1.4014e+00  1.4013e+00  4e-08  4e-13  2e-08  9e-12\n",
      "Optimal solution found.\n",
      "Solver status: optimal\n",
      "optimal objective value: 1.4014300716775199\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import cvxpy as cp\n",
    "import scipy as scipy\n",
    "import cvxopt as cvxopt\n",
    "\n",
    "# Load time series data: S&P 500 price log.\n",
    "y = np.loadtxt(open('data/snp500.txt', 'rb'), delimiter=\",\", skiprows=1)\n",
    "n = y.size\n",
    "\n",
    "# Form second difference matrix.\n",
    "e = np.ones((1, n))\n",
    "D = scipy.sparse.spdiags(np.vstack((e, -2*e, e)), range(3), n-2, n)\n",
    "\n",
    "# Set regularization parameter.\n",
    "vlambda = 50\n",
    "\n",
    "# Solve l1 trend filtering problem.\n",
    "x = cp.Variable(shape=n)\n",
    "obj = cp.Minimize(0.5 * cp.sum_squares(y - x)\n",
    "                  + vlambda * cp.norm(D*x, 1) )\n",
    "prob = cp.Problem(obj)\n",
    "\n",
    "# ECOS and SCS solvers fail to converge before\n",
    "# the iteration limit. Use CVXOPT instead.\n",
    "prob.solve(solver=cp.CVXOPT, verbose=True)\n",
    "print('Solver status: {}'.format(prob.status))\n",
    "\n",
    "# Check for error.\n",
    "if prob.status != cp.OPTIMAL:\n",
    "    raise Exception(\"Solver did not converge!\")\n",
    "\n",
    "print(\"optimal objective value: {}\".format(obj.value))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Results plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'log price')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Show plots inline in ipython.\n",
    "%matplotlib inline\n",
    "\n",
    "# Plot properties.\n",
    "plt.rc('text', usetex=True)\n",
    "plt.rc('font', family='serif')\n",
    "font = {'weight' : 'normal',\n",
    "        'size'   : 16}\n",
    "plt.rc('font', **font)\n",
    "\n",
    "# Plot estimated trend with original signal.\n",
    "plt.figure(figsize=(6, 6))\n",
    "plt.plot(np.arange(1,n+1), y, 'k:', linewidth=1.0)\n",
    "plt.plot(np.arange(1,n+1), np.array(x.value), 'b-', linewidth=2.0)\n",
    "plt.xlabel('date')\n",
    "plt.ylabel('log price')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
